.TH std::chrono::ceil(std::chrono::duration) 3 "2024.06.10" "http://cppreference.com" "C++ Standard Libary"
.SH NAME
std::chrono::ceil(std::chrono::duration) \- std::chrono::ceil(std::chrono::duration)

.SH Synopsis
   Defined in header <chrono>
   template< class ToDuration, class Rep, class Period >
   constexpr ToDuration ceil( const std::chrono::duration<Rep, Period>&   \fI(since C++17)\fP
   d );

   Returns the smallest duration t representable in ToDuration that is greater or equal
   to d.

   The function does not participate in the overload resolution unless ToDuration is a
   specialization of std::chrono::duration.

.SH Parameters

   d - duration to convert

.SH Return value

   d rounded up to a duration of type ToDuration.

.SH Possible implementation

   namespace detail
   {
       template<class> inline constexpr bool is_duration_v = false;
       template<class Rep, class Period> inline constexpr bool is_duration_v<
           std::chrono::duration<Rep, Period>> = true;
   }

   template<class To, class Rep, class Period,
            class = std::enable_if_t<detail::is_duration_v<To>>>
   constexpr To ceil(const std::chrono::duration<Rep, Period>& d)
   {
       To t = std::chrono::duration_cast<To>(d);
       if (t < d)
           return t + To{1};
       return t;
   }

.SH Example


// Run this code

 #include <chrono>
 #include <iostream>

 int main()
 {
     using namespace std::chrono_literals;
     using Min = std::chrono::minutes;

     std::cout
         << std::showpos
         << "ceil(+2.4min) = " << std::chrono::ceil<Min>(+2.4min).count() << "min\\n"
         << "ceil(-2.4min) = " << std::chrono::ceil<Min>(-2.4min).count() << "min\\n"
         << "ceil(+0.0min) = " << std::chrono::ceil<Min>(+0.0min).count() << "min\\n";
 }

.SH Output:

 ceil(+2.4min) = +3min
 ceil(-2.4min) = -2min
 ceil(+0.0min) = +0min

.SH See also

   duration_cast                 converts a duration to another, with a different tick
   \fI(C++11)\fP                       interval
                                 \fI(function template)\fP
   floor(std::chrono::duration)  converts a duration to another, rounding down
   \fI(C++17)\fP                       \fI(function template)\fP
   round(std::chrono::duration)  converts a duration to another, rounding to nearest,
   \fI(C++17)\fP                       ties to even
                                 \fI(function template)\fP
   ceil(std::chrono::time_point) converts a time_point to another, rounding up
   \fI(C++17)\fP                       \fI(function template)\fP
   ceil
   ceilf                         nearest integer not less than the given value
   ceill                         \fI(function)\fP
   \fI(C++11)\fP
   \fI(C++11)\fP
